Prior art processors typically perform comparisons of data, including integer data, floating point data and packed data. Such comparison operations are often used when determining whether branching should occur. For example, in a branch if greater than operation, two numbers are compared and a branch is taken if the first number is greater than the second number. Otherwise, the branch is not taken. The most basic comparisons are of two integer numbers.
In some applications, such as three-dimensional graphics, many numbers are compared to determine the "location" of various objects with respect to each other. In such applications, comparisons are performed more efficiently by operating on packed data. Packed data generally refers to the representation of multiple values by a single number. For example, four eight-bit integer numbers may be represented by a single 32-bit number having four eight-bit segments equivalent to the four eight-bit numbers. Thus, the significance given to various bit placements is altered from standard 32-bit values in order to accurately represent a greater number of smaller values. By performing a compare on the 32-bit packed data, four eight-bit integer compares are accomplished with a single compare operation. Similarly, packed data comparisons may be performed on floating point data.
Because many prior art processors branch on integer operations and many applications operate on floating point data, what is needed is an improved method and apparatus for performing branch instructions based on integer instructions in response to results of floating point operations.